package com.xinnet.mms.emp.service.impl;

import java.sql.SQLException;
import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.xinnet.mms.emp.service.HyMangerEmpDataHandleService;
import com.xinnet.mms.emp.service.PartyService;
import com.xinnet.mms.entity.Emp;
import com.xinnet.mms.login.service.EmpService;
/**
 * 
 * 
 * @author 王湛智[wangzhanzhi@xinnet.com]
 *
 * @version 1.0
 *
 * @since 2014年3月12日
 *
 */
@Service("hyMangerEmpDataHandle")
public class HyMangerEmpDataHandleServiceImpl implements HyMangerEmpDataHandleService {
	
	@Autowired
	private PartyService partyService;
	
	@Autowired
	private EmpService empService;
	
	private static Logger log=LoggerFactory.getLogger(PartyService.class);
	/**
	 * 
	 * 功能描述：从 db.hymanager.party 获取所有  员工姓名  ID 类型
	 *
	 * @throws SQLException
	 *
	 * @author 王湛智[wangzhanzhi@xinnet.com]
	 *
	 * @since 2014年3月12日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	public void leadingAllEmp() throws SQLException {
		//从hymanager取得所有业务员数据
		int i=1;
		List<Emp> partyList=partyService.getAllEmp();
		for(Emp emp:partyList) {
			//封装数据
			emp.setCustomerLimit(1000);
			emp.setCustomerLowerLimit(0);
			emp.setIsArtificialPush(1);
			emp.setIsSysPush(1);
			emp.setRepcustomerCount(100);
			emp.setAllotLabel(0);
			emp.setRolId("c8497a60-b391-407c-955f-d2e2e36f0a5d");
			//添加业务员
			empService.addEmp(emp);
			log.info("增加业务员---【 "+emp.getEname()+"】 | 已增加  【"+ i++ +"】  个");
		}
	}
	/**
	 * 
	 * 功能描述：同步业务员数据  ----定时任务调用
	 *
	 * @throws SQLException
	 *
	 * @author 王湛智[wangzhanzhi@xinnet.com]
	 *
	 * @since 2014年3月28日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	public void empSynchronousOld() throws SQLException {
		// 从hymanager取得所有业务员数据
		List<Emp> partyList = partyService.getAllEmp();
		if(partyList==null || partyList.isEmpty()) {
			return;
		}
		for (Emp emp : partyList) {
			
			
			//如果当前Emp表中没有包含party表的员工 则该员工是新入职人员  进行同步
			if(empService.getEmpbyEmpno(emp.getEmpno())==null) {
				// 封装数据
				emp.setCustomerLimit(1000);
				emp.setCustomerLowerLimit(0);
				emp.setIsArtificialPush(1);
				emp.setIsSysPush(1);
				emp.setRepcustomerCount(100);
				emp.setAllotLabel(0);
				emp.setRolId("c8497a60-b391-407c-955f-d2e2e36f0a5d");
				// 添加业务员
				empService.addEmp(emp);
				log.info("增加业务员---【 " + emp.getEname() + "】 | 该员工是新入职员工--员工编号是---【"+ emp.getEmpno() +"】");
			}
			//如果当前emp表的员工在party表是离职状态 则当前emp表删除该员工
			else if(partyService.getEmpStatuByEmpno(emp.getEmpno())!=null) {
				empService.delEmpByEmpno(emp.getEmpno());
				log.info("该业务员离职--【"+emp.getEname()+"】 | 员工编号是---【 "+emp.getEmpno()+" 】");
			}
			//否则同步员工账号密码
			else {
				empService.updateEmpByHyManagerMD5Salt(emp);
				log.info("业务员状态未改变--同步账号/密码---【"+ emp.getEname() +"】");
			}
		}
	}
	
	
	/**
	 * 同步员工数据-----定时任务调用（已重写）
	 */
	public void empSynchronous() throws SQLException {
		// 从hymanager取得所有业务员数据
		List<Emp> partyList = partyService.getAllEmp();
		if(partyList==null || partyList.isEmpty()) {
			return;
		}
		for (Emp emp : partyList) {
			Integer dimissionCount = partyService.getEmpStatuByEmpno(emp.getEmpno());
			if(dimissionCount > 0){ //dimissionCount大于0表示该员工已离职，则删除该员工在CRM系统中记录
				empService.delEmpByEmpno(emp.getEmpno());
				//log.info("该业务员离职--【"+emp.getEname()+"】 | 员工编号是---【 "+emp.getEmpno()+" 】");
			}else{ //有效
				
				//如果当前Emp表中没有包含party表的员工 则该员工是新入职人员  进行同步
				if(empService.getEmpbyEmpno(emp.getEmpno())==null) {
					// 封装数据
					emp.setCustomerLimit(1000);
					emp.setCustomerLowerLimit(0);
					emp.setIsArtificialPush(1);
					emp.setIsSysPush(1);
					emp.setRepcustomerCount(100);
					emp.setAllotLabel(0);
					emp.setReceiveCustom(0);
					emp.setRolId("cac04960-0c96-443e-a3e9-9c653b462881");
					emp.setId("7f80388a-3dba-4755-ae02-06aeb71049ca");
					// 添加业务员
					empService.addEmp(emp);
					log.info("增加业务员---【 " + emp.getEname() + "】 | 该员工是新入职员工--员工编号是---【"+ emp.getEmpno() +"】");
				}//否则同步员工账号密码
				else {
					//empService.updateEmpByHyManagerMD5Salt(emp);
					//log.info("业务员状态未改变--同步账号/密码---【"+ emp.getEname() +"】");
				}
			}
		}
	}
}
